home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / macrds.src < prev    next >
Text File  |  1995-04-22  |  8KB  |  393 lines

  1. 0 ; ** COMPUTE! ** JUL 84 ** PAGE 140 ** 
  2. 0200 ;EQUATES 
  3. 0210 ICBC = $342 
  4. 0220 ICBAL = $344 
  5. 0230 ICBAH = $345 
  6. 0240 ICBLL = $348 
  7. 0250 ICBLH = $349 
  8. 0260 ICBAX = $34A+16 
  9. 0270 MEMLO = $2E7 
  10. 0280 LBUF = $580 
  11. 0290 INBUF = $F3 
  12. 0300 CIX = $F2 
  13. 0310 FR0 = $D4 
  14. 0320 FR1 = $E0 
  15. 0330 GETR = $05 
  16. 0340 GETC = $07 
  17. 0350 PUTC = $0B 
  18. 0360 PUTR = $09 
  19. 0370 OPEN = $03 
  20. 0380 CLOSE = $0C 
  21. 0390 AXIO = $0C 
  22. 0400 AXOUT = $08 
  23. 0410 AXAP = $09 
  24. 0420 AXDR = $06 
  25. 0430 FR0Z = $DA44 
  26. 0440 IFP = $D9AA 
  27. 0450 FPI = $D9D2 
  28. 0460 FPASC = $D8E6 
  29. 0470 FMOVE = $DDB6 
  30. 0480 ASCFP = $D800 
  31. 0490 LO = $00FF 
  32. 0500 HI = $0100 
  33. 0510 CIO = $E456 
  34. 0520 WARMST = $E474 
  35. 0530 DOSVEC = $0A 
  36. 0540 DOSINI = $0C 
  37. 0550 OLDDOS = $179F 
  38. 0560 JMPINI = $1705 
  39. 0570 JMPRUN = $1708 
  40. 0580 ; 
  41. 0590 ; 
  42. 0600  *= $1CFC ;change this addr for 
  43. 0610 ;larger versions of DOS2.0S 
  44. 0620 ; 
  45. 0630 ; 
  46. 0640 ST JSR CLSE ;to be sure 
  47. 0650  STY CIX ;set f.p. pointer 
  48. 0660  DEY 
  49. 0670  STY $2E3;clear INIT/RUN 
  50. 0680  STY $2E1 
  51. 0690  STY $FF ;reset load flag 
  52. 0700  LDX #LBUF&LO ;init flt. pt. 
  53. 0710  LDY #LBUF/HI 
  54. 0720  STX INBUF 
  55. 0730  STY INBUF+1 
  56. 0740 DISCMD LDY #TAB1-CMDTAB-1 
  57. 0750 L1 TYA ;DISPLAY COMMANDS 
  58. 0760  PHA 
  59. 0770  LDA CMDTAB,Y 
  60. 0780  JSR PRINT 
  61. 0790  PLA 
  62. 0800  TAY 
  63. 0810  DEY 
  64. 0820  BPL L1 
  65. 0830  LDA #AXOUT ;init aux 
  66. 0840  STA ICBAX 
  67. 0850  JSR GTREC ;get command 
  68. 0860  LDY #3 ; GET COMMAND 
  69. 0870  LDA LBUF 
  70. 0880 L2 CMP TAB1,Y 
  71. 0890  BEQ SPECMD 
  72. 0900  DEY 
  73. 0910  BPL L2 
  74. 0920 DIR CMP #'D ;DIRECTORY 
  75. 0930  BNE WDS 
  76. 0940  LDA #06 
  77. 0950  STA ICBAX 
  78. 0960  JSR ASKDN ;drive #? 
  79. 0970  JSR OPN ;open 
  80. 0980 L3 LDX #$10 
  81. 0990  JSR GTREC ;get formatted line 
  82. 1000  JSR PTREC0 ;print it 
  83. 1010  BPL L3 
  84. 1020 SPECMD LDA TAB2,Y ;SPECIAL CMDS 
  85. 1030  PHA ;save cmd 
  86. 1040  CMP #$FE ;check if format 
  87. 1050  BEQ FMT 
  88. 1060  JSR PFN 
  89. 1070 EX PLA ;retrieve command 
  90. 1080  JSR EXCMD ;do it 
  91. 1090  BPL ST 
  92. 1100 FMT LDA #'? ;FORMAT 
  93. 1110  JSR PRINT ;sure? 
  94. 1120  JSR GTREC 
  95. 1130  LDA LBUF 
  96. 1140  CMP #'Y ;is there a yes? 
  97. 1150 B1 BNE ST ;if not start over 
  98. 1160  JSR ASKDN ;get drive# 
  99. 1170  BMI EX ;execute 
  100. 1180 ASKDN LDA #'D ;GET DRIVE# 
  101. 1190  JSR PRINT 
  102. 1200  LDA #'# 
  103. 1210  JSR PRINT 
  104. 1220  JSR GTREC 
  105. 1230  LDA LBUF 
  106. 1240  STA ADRDIR+1 ;change D# 
  107. 1250  STA ADRDOS+1 ;just in case WDS 
  108. 1260  LDY #6 
  109. 1270 L4 LDA ADRDIR,Y ;move filename 
  110. 1280  STA (INBUF),Y 
  111. 1290  DEY 
  112. 1300  BPL L4 
  113. 1310  RTS 
  114. 1320 PFN LDA #'F ;PROMPT FILENAME 
  115. 1330  JSR PRINT 
  116. 1340  LDA #'N 
  117. 1350  JSR PRINT 
  118. 1360  LDA #'? 
  119. 1370  JSR PRINT 
  120. 1380  JMP GTREC 
  121. 1390 WDS CMP #'W ;WRITE DOS.SYS 
  122. 1400  BNE LOD 
  123. 1410  JSR ASKDN 
  124. 1420  INY 
  125. 1430 L5 LDA ADRDOS,Y 
  126. 1440  STA (INBUF),Y 
  127. 1450  DEY 
  128. 1460  BNE L5 
  129. 1470  JSR OPN 
  130. 1480  BPL B1 
  131. 1490 LOD CMP #'L 
  132. 1500  BNE SAV 
  133. 1510  STA $FF 
  134. 1520  JSR PFN 
  135. 1530  LSR ICBAX ;8>4 
  136. 1540  JSR OPN 
  137. 1550 L6 JSR GETCR2 ;get hdr in pairs 
  138. 1560  LDA #$FF ;check headr and- 
  139. 1570  CMP FR0 ;disregard #FF'S 
  140. 1580  BNE SK2 
  141. 1590  CMP FR0+1 
  142. 1600  BEQ L6 
  143. 1610 SK2 JSR FMOVE ;FP0 TO FP1 
  144. 1620  JSR GETCR2 
  145. 1630  JSR SUBTR ;subtr HI-LO &execute 
  146. 1640  JSR CHKIN 
  147. 1650  BEQ L6 
  148. 1660 CHKIN LDA $2E3 
  149. 1670  BEQ SK12 
  150. 1680  JSR JMPINI 
  151. 1690  LDA #0 
  152. 1700  STA $2E3 
  153. 1710 SK12 RTS 
  154. 1720 SAV CMP#'S ;SAVE FUNCTION 
  155. 1730  BNE RUN 
  156. 1740  JSR PFN 
  157. 1750  LDY #$FF ;check if append (/) 
  158. 1760 L7 INY 
  159. 1770  LDA (INBUF),Y 
  160. 1780  CMP #'/ 
  161. 1790  BNE SK4 
  162. 1800  INC ICBAX ;9=append 
  163. 1810  LDA #$9B 
  164. 1820  STA (INBUF),Y 
  165. 1830 SK4 CMP #$9B 
  166. 1840  BNE L7 
  167. 1850  JSR OPN ;open for write 
  168. 1860  LDA #$FF ;start headr 
  169. 1870  STA FR0 
  170. 1880  STA FR0+1 
  171. 1890  JSR PUTCR2 ;write it 
  172. 1900  JSR INPCON ;get from# 
  173. 1910  JSR PUTCR2 ;write it 
  174. 1920  JSR FMOVE ;store it 
  175. 1930  JSR INPCON ;get to# 
  176. 1940  JSR PUTCR2 ;write it 
  177. 1950  JSR SUBTR ;find len and save 
  178. 1960  BPL B2 ;the rest 
  179. 1970 RUN CMP #'@ ;RUN 
  180. 1980  BNE CART 
  181. 1990  JSR INPCON ;get # 
  182. 2000  JMP (FR0) ;jump indirectly 
  183. 2010 CART CMP #'C ;CARTRIDGE 
  184. 2020  BNE ADOS 
  185. 2030  JMP WARMST 
  186. 2040 ADOS CMP#'! ;ESC TO ATARI DUP 
  187. 2050  BNE HEX 
  188. 2060  LDA #$40 ;reset DOSINI for no- 
  189. 2070  STA DOSINI ;trouble later 
  190. 2080  LDA #$15 
  191. 2090  STA DOSINI+1 
  192. 2100  JSR $1540 ;fast reset DOSVEC 
  193. 2110  JMP OLDDOS 
  194. 2120 HEX CMP #'$ ;HEX TO DEC 
  195. 2130  BNE DEC 
  196. 2140  JSR HASCI ;hex to int 
  197. 2150  JSR IASC ;int to dec 
  198. 2160  BPL B2 
  199. 2170 DEC CMP #'. ;DEC TO HEX 
  200. 2180  BNE B2 
  201. 2190  JSR DASCI ;dec to int 
  202. 2200  JSR IHASC ; int to hex 
  203. 2210 B2 BPL LSTCNC+2 
  204. 2220 OPN LDA #OPEN ;IOCB MAIN SETUPS 
  205. 2230 EXCMD LDX #$10 
  206. 2240  BNE GTR2 
  207. 2250 PTREC0 LDX #0 
  208. 2260 PTREC LDA #PUTR 
  209. 2270  BNE GTR2 
  210. 2280 GETREC0 
  211. 2290 GTREC LDA #GETR 
  212. 2300 GTR2 STA ICBC,X 
  213. 2310  LDA #$1E ;max rec length 
  214. 2320  STA ICBLL,X 
  215. 2330  LDA #LBUF/HI 
  216. 2340  STA ICBAH,X 
  217. 2350  LDA #LBUF&LO 
  218. 2360 PGIN STA ICBAL,X 
  219. 2370  LDA #0 
  220. 2380  STA ICBLH,X 
  221. 2390 ICB JSR CIO ;let the OS take over 
  222. 2400  BMI ERR 
  223. 2410 RTN2 RTS 
  224. 2420 PUTCR2 LDA #PUTC 
  225. 2430  BNE GETC2 
  226. 2440 GETCR2 LDA #GETC 
  227. 2450 GETC2 LDX #$10 
  228. 2460  STA ICBC,X 
  229. 2470  LDA #2 
  230. 2480 JG STA ICBLL,X 
  231. 2490  LDA #0 
  232. 2500  STA ICBAH,X 
  233. 2510  LDA #FR0 
  234. 2520  BNE PGIN 
  235. 2530 CLSE LDA #CLOSE 
  236. 2540  BPL EXCMD 
  237. 2550 PRINT STA FR0 
  238. 2560  LDX #0 
  239. 2570  LDA #PUTC 
  240. 2580  STA ICBC,X 
  241. 2590  LDA #1 
  242. 2600  BPL JG 
  243. 2610 ERR CPY #$03 ;ERR next read OK 
  244. 2620  BEQ RTN2 
  245. 2630  CPY #$88 ;ERR EOF OK too 
  246. 2640  BEQ CINI 
  247. 2650  TYA  ;store ERR 
  248. 2660  PHA 
  249. 2670  LDA #$C5 ;inverted E for error 
  250. 2680  JSR PRINT 
  251. 2690  JSR FR0Z ;clear FP0 
  252. 2700  PLA  ;retrieve ERR 
  253. 2710  STA FR0 
  254. 2720  JSR IASC ;int to dec 
  255. 2730 LSTCNC PLA ;clr stack of return 
  256. 2740  PLA 
  257. 2750  JMP ST ;do no pass GO 
  258. 2760 CINI LDA $FF 
  259. 2770  BEQ LSTCNC 
  260. 2780  JSR CHKIN 
  261. 2790 JRUN LDA $2E1 
  262. 2800  BEQ LSTCNC 
  263. 2810  JSR JMPRUN 
  264. 2820  BNE LSTCNC 
  265. 2830 INPCON LDA #'@ ;HEX OR DEC# TYPE 
  266. 2840  JSR PRINT ;the @ means AT/TO 
  267. 2850  JSR GTREC 
  268. 2860  LDY LBUF 
  269. 2870  CPY #'. 
  270. 2880  BEQ DASCI 
  271. 2890  CPY #'$ 
  272. 2900  BEQ HASCI 
  273. 2910  BNE ERR ;bad input 
  274. 2920 DASCI JSR ASCFP ;DEC TO INT 
  275. 2930  JMP FPI 
  276. 2940 HASCI JSR FR0Z ;HEX TO INT 
  277. 2950  LDY #1 
  278. 2960 LB LDA (INBUF),Y 
  279. 2970  CMP #$9B 
  280. 2980  BEQ RTN 
  281. 2990  SEC  ;convert each digit 
  282. 3000  SBC #$30 
  283. 3010  CMP #$0A 
  284. 3020  BMI SK7 
  285. 3030  SBC #7 
  286. 3040 SK7 LDX #4 ;times 16 
  287. 3050 LA ASL FR0 
  288. 3060  ROL FR0+1 
  289. 3070  DEX 
  290. 3080  BNE LA 
  291. 3090  ORA FR0 ;add in new bits 
  292. 3100  STA FR0 
  293. 3110  INY 
  294. 3120  BPL LB 
  295. 3130 RTN RTS 
  296. 3140 IHASC LDY #0 ;INT TO HEX SUBRT 
  297. 3150  LDX #1 
  298. 3160 LC LDA #$F0 ;hi mask 
  299. 3170  AND FR0,X 
  300. 3180  LSR A ;roll into low bits 
  301. 3190  LSR A 
  302. 3200  LSR A 
  303. 3210  LSR A 
  304. 3220  JSR CONVH ;go conv to digit 
  305. 3230  LDA #$0F ;lo mask 
  306. 3240  AND FR0,X 
  307. 3250  JSR CONVH 
  308. 3260  DEX 
  309. 3270  BPL LC ;one more time 
  310. 3280  BMI LE ;set eol and rtn 
  311. 3290 CONVH CMP #$0A ;INT TO HEX DIGIT 
  312. 3300  BMI SK9 
  313. 3310  ADC #6 ;carry set 
  314. 3320 SK9 ADC #$30 ;carry clr 
  315. 3330  STA (INBUF),Y 
  316. 3340  INY 
  317. 3350  RTS 
  318. 3360 IASC JSR IFP ;INT TO DEC 
  319. 3370  JSR FPASC 
  320. 3380 AREC LDY #0 ;CLR HI BIT/MAKE REC 
  321. 3390 L9 LDA (INBUF),Y 
  322. 3400  INY 
  323. 3410  CMP #$80 ;find hi bit char 
  324. 3420  BMI L9 
  325. 3430  AND #$7F ;mask it 
  326. 3440  DEY 
  327. 3450  STA (INBUF),Y 
  328. 3460  INY 
  329. 3470 LE LDA #$9B ;set EOL 
  330. 3480  STA (INBUF),Y 
  331. 3490  JMP PTREC0 
  332. 3500 SUBTR INC FR0 ;inclusive so inc 
  333. 3510  BNE SK5 ;TO address 
  334. 3520  INC FR0+1 
  335. 3530 SK5 LDX #$10 
  336. 3540  LDA FR1 
  337. 3550  STA ICBAL,X 
  338. 3560  LDA FR1+1 
  339. 3570  STA ICBAH,X 
  340. 3580  SEC ;CALC LENGTH 
  341. 3590  LDA FR0 
  342. 3600  SBC FR1 
  343. 3610  STA ICBLL,X ;STORE AT IOCB 
  344. 3620  LDA FR0+1 
  345. 3630  SBC FR1+1 
  346. 3640  JMP ICB+3 ;exec same cmd as last 
  347. 3650 ; 
  348. 3660 ; 
  349. 3670 INIT JSR $1540 ;SRESET INIT 
  350. 3680 JI LDA #END&LO 
  351. 3690  STA MEMLO 
  352. 3700  LDA #END/HI 
  353. 3710  STA MEMLO+1 
  354. 3720  LDA #ST&LO 
  355. 3730  STA DOSVEC 
  356. 3740  LDA #ST/HI 
  357. 3750  STA DOSVEC+1 
  358. 3760  RTS 
  359. 3770 ; 
  360. 3780 ; 
  361. 3790 CMDTAB 
  362. 3795 ;all spaces are one space 
  363. 3800  .BYTE ">",$9B,$9B,"SD",$A1 
  364. 3810  .BYTE " $>",$AE," .>",$A4 
  365. 3820  .BYTE " SD",$D7," NR",$C0 
  366. 3830  .BYTE " DO",$CC," VA",$D3 
  367. 3840  .BYTE "TR",$C3," TM",$C6 
  368. 3850  .BYTE " SR",$C5," MN",$D2 
  369. 3860  .BYTE " *N",$D5," KL",$AA 
  370. 3870  .BYTE " RI",$C4,$9B 
  371. 3880 TAB1 
  372. 3890  .BYTE "RE*UF" 
  373. 3900 TAB2 
  374. 3910  .BYTE $20,$21,$23,$24,$FE 
  375. 3920 ADRDIR 
  376. 3930  .BYTE "D1:*.*",$9B 
  377. 3940 ADRDOS 
  378. 3950  .BYTE "D1:DOS.SYS",$9B 
  379. 3960 END 
  380. 3965 ;end after boot init executed 
  381. 3970 ; 
  382. 3980 ; 
  383. 3990 INIT1 LDA #INIT&LO ;BOOT INIT 
  384. 4000  STA DOSINI 
  385. 4010  LDA #INIT/HI 
  386. 4020  STA DOSINI+1 
  387. 4030  JMP JI 
  388. 4040 ; 
  389. 4050 ; 
  390. 4060  *= $2E2 ;LOAD AND GO I